"""
对文件系统的访问大多是通过OS模块来实现的，OS模块提供了丰富的方法来处理文件和目录。
OS模块只是真正加载的模块的前端，真正的那个模块要依赖于具体的操作系统。
如果是Win32系统，OS模块会加载nt模块，而nt模块会加载win32api模块。
如果是Linux系统，OS模块会加载posix模块，而posix模块会加载posixapi模块。
macOS系统也是类似的。
"""

import os


#文件与目录操作
os.getcwd()  # 获取当前工作目录
os.chdir('C:\\Users\\Administrator\\Desktop')  # 改变当前工作目录
os.listdir()  # 列出当前目录下的所有文件和子目录
os.mkdir('test')  # 创建一个名为test的目录
os.rmdir('test')  # 删除一个名为test的目录
os.path.exists('test.txt')  # 判断文件是否存在
os.path.isfile('test.txt')  # 判断是否为文件
os.path.isdir('test')  # 判断是否为目录
os.path.getsize('test.txt')  # 获取文件大小
os.path.getmtime('test.txt')  # 获取文件最后修改时间
os.path.getatime('test.txt')  # 获取文件最后访问时间
os.path.getctime('test.txt')  # 获取文件创建时间
os.path.abspath('test.txt')  # 获取文件的绝对路径
os.path.dirname('C:\\Users\\Administrator\\Desktop\\test.txt')  # 获取文件所在目录

os.walk('C:\\Users\\Administrator\\Desktop')  # 遍历目录树，返回一个三元组(root, dirs, files)，分别表示当前目录、子目录和文件列表
os.path.join('C:\\Users\\Administrator\\Desktop', 'test.txt')  # 拼接路径
os.path.split('C:\\Users\\Administrator\\Desktop\\test.txt')  # 分割路径
os.path.splitext('C:\\Users\\Administrator\\Desktop\\test.txt')  # 分割文件名和扩展名
os.path.basename('C:\\Users\\Administrator\\Desktop\\test.txt')  # 获取文件名


#环境变量
os.environ  # 获取所有环境变量
os.environ['PATH']  # 获取指定环境变量的值

#获取当前操作系统类型
os.name  # 获取当前操作系统类型，'posix'表示Linux或Unix，'nt'表示Windows
os.uname()  # 获取当前操作系统的详细信息，只有在Unix系统上可用
os.system('dir')  # 执行系统命令，返回命令的返回码
os.popen('dir').read()  # 执行系统命令，返回命令的输出

#进程
os.getpid()  # 获取当前进程的进程ID
os.getppid()  # 获取当前进程的父进程ID
os.kill(pid, signal.SIGTERM)  # 终止指定进程ID的进程

#命令行
os.system('ls')  # 执行系统命令
os.popen('ls').read()  # 执行系统命令，返回命令的输出